home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 29 / CDT29.iso / e-Mail / WorldClient Pro 2.2.3 / wcsetup.exe / WEBHELP.ZIP / hhapplet / SiteMapParserToIndex.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-10-21  |  3.8 KB  |  233 lines

  1. package hhapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.util.Vector;
  5. import sitemap.SiteMapParserOutput;
  6.  
  7. public class SiteMapParserToIndex implements SiteMapParserOutput {
  8.    protected Applet m_applet;
  9.    protected IndexPane m_ipIndex;
  10.    protected int indent = 0;
  11.    protected int real_indent = 0;
  12.    protected boolean done_a_node = false;
  13.    protected int param_no = -1;
  14.    protected String m_strName;
  15.    protected Vector secondary_entries;
  16.    protected boolean m_bInGlobal = true;
  17.    protected char m_chCurrentStart = ' ';
  18.    protected int m_nItemsFound = 0;
  19.    protected String default_frame_name;
  20.  
  21.    public void end() {
  22.       this.m_ipIndex.getEditBox().enable(true);
  23.       this.m_ipIndex.ShowList();
  24.       this.m_ipIndex.getEditBox().requestFocus();
  25.       this.m_applet.showStatus("Done");
  26.    }
  27.  
  28.    public SiteMapParserToIndex(Applet var1) {
  29.       this.m_applet = var1;
  30.       this.m_ipIndex = new IndexPane(this.m_applet);
  31.    }
  32.  
  33.    public void object_start() {
  34.       this.done_a_node = true;
  35.       this.m_bInGlobal = false;
  36.       this.param_no = -1;
  37.       this.secondary_entries = new Vector();
  38.    }
  39.  
  40.    public void indent(int var1) {
  41.       if (var1 == 1) {
  42.          ++this.real_indent;
  43.          if (this.done_a_node) {
  44.             ++this.indent;
  45.          }
  46.       } else if (var1 == -1) {
  47.          this.real_indent += -1;
  48.          this.indent = this.real_indent;
  49.       }
  50.  
  51.       this.done_a_node = false;
  52.    }
  53.  
  54.    private String indent_string() {
  55.       String var1 = "";
  56.  
  57.       for(int var2 = 0; var2 < this.indent; ++var2) {
  58.          var1 = var1 + "  ";
  59.       }
  60.  
  61.       return var1;
  62.    }
  63.  
  64.    public IndexPane getIndex() {
  65.       return this.m_ipIndex;
  66.    }
  67.  
  68.    public void start() {
  69.       this.m_ipIndex.getEditBox().enable(false);
  70.       this.m_ipIndex.HideList();
  71.    }
  72.  
  73.    public void object_end() {
  74.       if (this.getLatestEntry().local != null && this.getLatestEntry().local.length() > 0) {
  75.          this.m_ipIndex.add(this.indent_string() + this.m_strName, this.secondary_entries);
  76.       }
  77.  
  78.       if (this.m_strName != null && this.m_strName.length() != 0) {
  79.          char var1 = Character.toUpperCase(this.m_strName.charAt(0));
  80.          if (this.indent == 0 && var1 != this.m_chCurrentStart) {
  81.             this.m_chCurrentStart = var1;
  82.             String var2 = "Loading Index [";
  83.             var2 = var2 + var1;
  84.             var2 = var2 + "]...";
  85.             this.m_applet.showStatus(var2);
  86.          }
  87.  
  88.          ++this.m_nItemsFound;
  89.          if (this.m_nItemsFound % 50 == 0) {
  90.             this.m_ipIndex.paintAll(this.m_ipIndex.getGraphics());
  91.          }
  92.  
  93.       }
  94.    }
  95.  
  96.    public IndexSecondaryEntry getLatestEntry() {
  97.       int var1 = this.param_no == 0 ? 0 : this.param_no - 1;
  98.       if (this.secondary_entries.size() < var1 + 1) {
  99.          this.secondary_entries.setSize(var1 + 1);
  100.          this.secondary_entries.setElementAt(new IndexSecondaryEntry(), var1);
  101.       }
  102.  
  103.       return (IndexSecondaryEntry)this.secondary_entries.elementAt(var1);
  104.    }
  105.  
  106.    public void param(String var1, String var2) {
  107.       char var3 = Character.toUpperCase(var1.charAt(0));
  108.       if (this.m_bInGlobal) {
  109.          if (var3 == 'F' && var1.equalsIgnoreCase("FrameName")) {
  110.             this.default_frame_name = var2;
  111.             return;
  112.          }
  113.       } else {
  114.          switch (var3) {
  115.             case 'F':
  116.                if (var1.equalsIgnoreCase("Frame")) {
  117.                   this.getLatestEntry().frame = var2;
  118.                   return;
  119.                }
  120.                break;
  121.             case 'L':
  122.                if (var1.equalsIgnoreCase("Local")) {
  123.                   this.getLatestEntry().local = var2;
  124.                   return;
  125.                }
  126.                break;
  127.             case 'N':
  128.                if (var1.equalsIgnoreCase("Name")) {
  129.                   ++this.param_no;
  130.                   var2 = this.fixSpecialCharacters(var2);
  131.                   this.getLatestEntry().name = var2;
  132.                   if (this.getLatestEntry().frame == null) {
  133.                      this.getLatestEntry().frame = this.default_frame_name;
  134.                   }
  135.  
  136.                   if (this.param_no == 0) {
  137.                      this.m_strName = var2;
  138.                      return;
  139.                   }
  140.                }
  141.                break;
  142.             case 'S':
  143.                if (var1.equalsIgnoreCase("See Also")) {
  144.                   this.getLatestEntry().see_also = var2;
  145.                   return;
  146.                }
  147.                break;
  148.             case 'U':
  149.                if (var1.equalsIgnoreCase("URL")) {
  150.                   this.getLatestEntry().url = var2;
  151.                   return;
  152.                }
  153.          }
  154.       }
  155.  
  156.    }
  157.  
  158.    public String fixSpecialCharacters(String var1) {
  159.       if (var1 == null) {
  160.          return null;
  161.       } else {
  162.          int var2 = var1.indexOf(38);
  163.          if (var2 < 0) {
  164.             return var1;
  165.          } else {
  166.             String var3 = "";
  167.  
  168.             while(var2 > -1 && var2 < var1.length() - 2) {
  169.                var3 = var3 + var1.substring(0, var2);
  170.                String var4 = var1.substring(var2);
  171.                int var5 = var4.indexOf(59);
  172.                if (var5 < 0) {
  173.                   var3 = var3 + var4;
  174.                   break;
  175.                }
  176.  
  177.                if (var5 < var4.length() - 1) {
  178.                   var1 = var4.substring(var5 + 1);
  179.                } else {
  180.                   var1 = "";
  181.                }
  182.  
  183.                var4 = var4.substring(1, var5);
  184.                switch (Character.toUpperCase(var4.charAt(0))) {
  185.                   case 'A':
  186.                      if (var4.equalsIgnoreCase("amp")) {
  187.                         var4 = "&";
  188.                      }
  189.                      break;
  190.                   case 'C':
  191.                      if (var4.equalsIgnoreCase("copy")) {
  192.                         var4 = "(c)";
  193.                      }
  194.                      break;
  195.                   case 'G':
  196.                      if (var4.equalsIgnoreCase("gt")) {
  197.                         var4 = ">";
  198.                      }
  199.                      break;
  200.                   case 'L':
  201.                      if (var4.equalsIgnoreCase("lt")) {
  202.                         var4 = "<";
  203.                      }
  204.                      break;
  205.                   case 'N':
  206.                      if (var4.equalsIgnoreCase("nbsp")) {
  207.                         var4 = " ";
  208.                      }
  209.                      break;
  210.                   case 'Q':
  211.                      if (var4.equalsIgnoreCase("quot")) {
  212.                         var4 = "\"";
  213.                      }
  214.                      break;
  215.                   case 'R':
  216.                      if (var4.equalsIgnoreCase("reg")) {
  217.                         var4 = "(R)";
  218.                      }
  219.                }
  220.  
  221.                var3 = var3 + var4;
  222.                var2 = var1.indexOf(38);
  223.                if (var2 < 0) {
  224.                   var3 = var3 + var1;
  225.                }
  226.             }
  227.  
  228.             return var3;
  229.          }
  230.       }
  231.    }
  232. }
  233.